package com.corpgovernment.permission;

import com.corpgovernment.permission.entity.db.Menu;

import com.corpgovernment.permission.vo.MenuVo;
import com.ctrip.corp.obt.generic.utils.CollectionUtils;

import java.util.*;

/**
 *
 * @author marco.zheng   (cq_zheng@trip.com)
 * @date 2023/8/11
 */

public class MenuConverter {
     public static List<Menu> toMenuVo(List<MenuVo> menuList){
         if (CollectionUtils.isEmpty(menuList)){
             return Collections.emptyList();
         }
          List<Menu> list = new ArrayList<>();
          menuList.forEach(menu -> {
              Menu menuVo = new Menu();
               menuVo.setId(menu.getId());
               menuVo.setIsParentMenu(menu.getIsParentMenu());
               menuVo.setName(menu.getName());
               menuVo.setIcon(menu.getIcon());
               menuVo.setPermission(menu.getPermission());
               menuVo.setSort(menu.getSort());
               menuVo.setType(menu.getType());
               menuVo.setParentId(menu.getParentId());
               menuVo.setServiceUrlList(menu.getServiceUrlList());
               if (CollectionUtils.isNotEmpty(menu.getChildren())){
                    menuVo.setChildren(toMenuVo(menu.getChildren()));
               }
              menuVo.setKey(menu.getKey());
              menuVo.setUrl(menu.getUrl());
              menuVo.setValid(menu.getValid());
              menuVo.setDataPermission(menu.getDataPermission());
               list.add(menuVo);
          });
          list.sort(Comparator.comparingInt(Menu::getSort));
          return list;


     }
     public static Menu toMenuVo(MenuVo menu){
         Menu menuVo = new Menu();
         menuVo.setId(menu.getId());
         menuVo.setIsParentMenu(menu.getIsParentMenu());
         menuVo.setName(menu.getName());
         menuVo.setIcon(menu.getIcon());
         menuVo.setPermission(menu.getPermission());
         menuVo.setSort(menu.getSort());
         menuVo.setType(menu.getType());
         menuVo.setParentId(menu.getParentId());
         menuVo.setServiceUrlList(menu.getServiceUrlList());
         menuVo.setKey(menu.getKey());
         menuVo.setUrl(menu.getUrl());
         menuVo.setValid(menu.getValid());
         menuVo.setDataPermission(menu.getDataPermission());
         return menuVo;
     }


     public static Menu toModel(MenuVo menuVo) {
         Menu menu = new Menu();
         menu.setId(menuVo.getId());
         menu.setName(menuVo.getName());
         menu.setIcon(menuVo.getIcon());
         menu.setPermission(menuVo.getPermission());
         menu.setSort(menuVo.getSort());
         menu.setType(menuVo.getType());
         menu.setParentId(menuVo.getParentId());
         menu.setServiceUrlList(menuVo.getServiceUrlList());
         menu.setKey(menuVo.getKey());
         menu.setUrl(menuVo.getUrl());
         menu.setValid(menuVo.getValid());
         menu.setDataPermission(menuVo.getDataPermission());
         return menu;
     }
}
